package edu.xust.service.impl;


import edu.xust.config.Service;
import edu.xust.dao.TStudentDao;
import edu.xust.dao.impl.TStudentDaoImpl;
import edu.xust.dto.BaseDto;
import edu.xust.dto.MessageEnum;
import edu.xust.entity.TStudent;
import edu.xust.page.PageInfo;
import edu.xust.service.TStudentService;

import java.util.List;
import java.util.Optional;

//业务逻辑层 分担了控制器层 controller 与  数据访问层 dao的业务逻辑部分的判断与计算，例如下单失败是因为库存不足
@Service("tStudentService")//这个名字和controller需要的service的名字对应
public class TStudentServiceImpl implements TStudentService {
    TStudentDao tStudentDao = new TStudentDaoImpl();

    @Override
    public BaseDto getTStudentByPage(PageInfo pageInfo) throws Exception {
        List<TStudent> tStudentByPage = tStudentDao.getTStudentByPage(pageInfo);

        //允许为空的容器包装类
        Optional<List<TStudent>> op = Optional.ofNullable(tStudentByPage);
        //isPresent() -->判断是否为空
        MessageEnum messageEnum = op.isPresent()?MessageEnum.GETALLSTUDENTSUCCESS:MessageEnum.GETSTUDENTBYIDFAIL;//如果成立 赋值 赋？与：之间 否则：之后
        BaseDto dto = new BaseDto(messageEnum,op.get());//如果没有查到数据 前端拿到的时候失败的枚举和null的集合，如果成功前端拿到的是成功的枚举 和  查询到的集合
        dto.setObj(pageInfo);
        return dto;
    }

    @Override
    public BaseDto getTStudentByPageOftwo(PageInfo pageInfo) throws Exception {
        List<TStudent> tStudentByPageOfWaystwo = tStudentDao.getTStudentByPageOfWaystwo(pageInfo);

        //允许为空的容器包装类
        Optional<List<TStudent>> op = Optional.ofNullable(tStudentByPageOfWaystwo);
        //isPresent() -->判断是否为空
        MessageEnum messageEnum = op.isPresent()?MessageEnum.GETALLSTUDENTSUCCESS:MessageEnum.GETSTUDENTBYIDFAIL;//如果成立 赋值 赋？与：之间 否则：之后
        BaseDto dto = new BaseDto(messageEnum,op.get());//如果没有查到数据 前端拿到的时候失败的枚举和null的集合，如果成功前端拿到的是成功的枚举 和  查询到的集合
        dto.setObj(pageInfo);
        return dto;
    }
}
